package likong.bibliothek.pages.buch;

import java.util.List;

import likong.bibliothek.obj.Buch;
import likong.bibliothek.obj.BuchStatus;
import likong.bibliothek.obj.Language;
import likong.bibliothek.obj.Spender;
import likong.bibliothek.pages.buch.authorpanel.AutorAddPanel;

import org.apache.wicket.markup.html.form.Button;
import org.apache.wicket.markup.html.form.ChoiceRenderer;
import org.apache.wicket.markup.html.form.DropDownChoice;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.form.TextField;
import org.apache.wicket.markup.html.panel.FeedbackPanel;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import org.apache.wicket.model.util.ListModel;

import db.HibernateHelper;


import Persondata.Person;

public abstract class BuecherFormPanel extends Panel {
	private static final long serialVersionUID = 1L;
	public BuecherFormPanel(String id, IModel<Buch> model) {
		super(id, model);

		List<BuchStatus> choices = HibernateHelper.listAll(BuchStatus.class); //session.createQuery("from BuchStatus").list();
		List<Language> language = HibernateHelper.listAll(Language.class); //session.createQuery("from Language").list();
		List<Spender> spender = HibernateHelper.listAll(Spender.class); //session.createQuery("from Spender").list();
		
		BuchForm buchForm = new BuchForm("form", model);
		buchForm.add(new TextField<String>("titel").setRequired(true));
		buchForm.add(new DropDownChoice<BuchStatus>("status", new ListModel<BuchStatus>(choices),new ChoiceRenderer<BuchStatus>("status", "status")));
		buchForm.add(new DropDownChoice<Language>("language", new ListModel<Language>(language),new ChoiceRenderer<Language>("language", "language")));
		buchForm.add(new DropDownChoice<Spender>("spender", new ListModel<Spender>(spender),new ChoiceRenderer<Spender>("name", "name")));
		buchForm.add(new FeedbackPanel("feedback"));
		buchForm.add(new AutorAddPanel("autor",model));
		add(buchForm);
		
	}
	
	protected abstract void onSubmitModelHandle(final IModel<Buch> model);
	
	private class BuchForm extends Form<Buch> {
		private static final long serialVersionUID = 1L;

		public BuchForm(String id, IModel<Buch> model) {
			super(id, model);
		}

		protected void onSubmit() {
			// *Wie* gespeichert wird, wird hier nicht definiert! Dazu muss die abstrakte äußere Klasse definiert werden. 
			onSubmitModelHandle(getModel());
		}
	}
}
